import i from "./MatchGameData";
import r from "./SdkHelper";

class GameErrorCatch {
    static errorCount = 0;
    static catchInterval = 5000;
    static maxErrorCount = 20;
    static errorReportInterval = 100;
    static canReport = false;

    static init() {
        GameErrorCatch.errorCount = 0;
        GameErrorCatch.canReport = i.isEnableDebug();
        if (cc.sys.isNative) {
            // window.__errorHandler = function(e, a, o, i) {
            //     var n = {};
            //     GameErrorCatch.errorCount += 1;
            //     n.errorMessage = e;
            //     n.file = a;
            //     n.line = o;
            //     n.message = i;
            //     if (window.exception !== JSON.stringify(n)) {
            //         window.exception = JSON.stringify(n);
            //         console.log("error_catch", JSON.stringify(n));
            //         if (GameErrorCatch.canReport) {
            //             r.reportData("catch_game_error", {
            //                 error_message: n
            //             });
            //             GameErrorCatch.canReport = false;
            //             setTimeout( () =>{
            //                 GameErrorCatch.canReport = true;
            //             }, GameErrorCatch.errorReportInterval);
            //         }
            //     }
            // };
            // GameErrorCatch.checkError();
        } else if (cc.sys.isBrowser) {
            // window.onerror = function(e, t, a, o, i) {
            //     var r = {};
            //     r.message = e;
            //     r.url = t;
            //     r.line = a;
            //     r.column = o;
            //     r.errorObj = i;
            //     if (window.errorObj !== JSON.stringify(r)) {
            //         window.errorObj = JSON.stringify(r);
            //         console.error(r);
            //     }
            // };
        }
    }

    static checkError() {
        // console.log("checkError", window.exception);
        // setTimeout( () =>{
        //     if (GameErrorCatch.errorCount < GameErrorCatch.maxErrorCount) {
        //         GameErrorCatch.errorCount = 0;
        //         GameErrorCatch.checkError();
        //     } else {
        //         console.log("errorCount", GameErrorCatch.errorCount);
        //         r.reportData("game_error_count_report", {
        //             error_count: GameErrorCatch.errorCount,
        //             error_message: window.exception
        //         });
        //     }
        // }, GameErrorCatch.catchInterval);
    }
}

export default GameErrorCatch;
